<?php
/*
 The contents of this file are subject to the Mozilla Public
 License Version 1.1 (the "License"); you may not use this file
 except in compliance with the License. You may obtain a copy
 of the License at http://www.mozilla.org/MPL/

 Software distributed under the License is distributed on an
 "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 implied. See the License for the specific language governing
 rights and limitations under the License.

 The Original Code is State Machine Compiler (SMC).

 The Initial Developer of the Original Code is Charles W. Rapp.
 Portions created by Charles W. Rapp are
 Copyright (C) 2005. Charles W. Rapp.
 All Rights Reserved.

 Port (from the Python port) to PHP5 by Toni Arnold

 Contributor(s):

 See: http://smc.sourceforge.net/

 RCS ID
 $Id: statemap.php,v 1.4 2009/04/25 14:29:10 cwrapp Exp $

 CHANGE LOG
 $Log: statemap.php,v $
 Revision 1.4  2009/04/25 14:29:10  cwrapp
 Corrected isInTransition.

 Revision 1.3  2009/04/22 20:19:57  fperrad
 Pass initial state to FSMContext constructor

 Revision 1.2  2008/05/20 18:31:13  cwrapp
 ----------------------------------------------------------------------

 Committing release 5.1.0.

 Modified Files:
 	Makefile README.txt smc.mk tar_list.txt bin/Smc.jar
 	examples/Ant/EX1/build.xml examples/Ant/EX2/build.xml
 	examples/Ant/EX3/build.xml examples/Ant/EX4/build.xml
 	examples/Ant/EX5/build.xml examples/Ant/EX6/build.xml
 	examples/Ant/EX7/build.xml examples/Ant/EX7/src/Telephone.java
 	examples/Java/EX1/Makefile examples/Java/EX4/Makefile
 	examples/Java/EX5/Makefile examples/Java/EX6/Makefile
 	examples/Java/EX7/Makefile examples/Ruby/EX1/Makefile
 	lib/statemap.jar lib/C++/statemap.h lib/Java/Makefile
 	lib/Php/statemap.php lib/Scala/Makefile
 	lib/Scala/statemap.scala net/sf/smc/CODE_README.txt
 	net/sf/smc/README.txt net/sf/smc/Smc.java
 ----------------------------------------------------------------------

 Revision 1.1  2008/04/22 16:00:39  fperrad
 - add PHP language (patch from Toni Arnold)


*/

/*
A StateUndefinedException is thrown by
an SMC-generated state machine whenever a transition is taken
and there is no state currently set. This occurs when a
transition is issued from within a transition action."""
*/
class StateUndefinedException extends Exception
{
}

/*
A TransitionUndefinedException is thrown by
an SMC-generated state machine whenever a transition is taken
which:

 - Is not explicitly defined in the current state.
 - Is not explicitly defined in the current FSM's default state.
 - There is no Default transition in the current state."""
*/
class TransitionUndefinedException extends Exception
{
}

/*
Base State class
*/
class RokCommon_State
{
    protected $_name;
    protected $_id;

    public function __construct($name, $id) {
        $this->_name = $name;
        $this->_id = $id;
    }

    // Returns the state's printable name.
    public function getName() {
        return $this->_name;
    }

    // Returns the state's unique identifier.
    public function getId() {
        return $this->_id;
    }
}
